Velocity based content delivery

ABSTRACT

Methods, systems, and apparatuses, including computer program products, may be used for content delivery. In particular implementations, methods, systems, and apparatuses may include the ability to identify that a content item request for a user device has been received, determine a position and velocity of the user device, select a content item to provide to the user device based at least on its position and velocity, and sending the content item to the user device.

BACKGROUND

The Internet has enabled access to a wide variety of content items,e.g., text, graphics, audio and/or video files, web pages for particularsubjects, news articles, etc. Such access to these content items haslikewise enabled opportunities for targeted advertising. For example,content items of particular interest to a user can be identified by asearch engine in response to a user query. The query can include one ormore search terms, and the search engine can identify and, optionally,rank the content items based on the search terms in the query and sendthe content items to the user (e.g., according to the rank). The querycan also be an indicator of the type of information of interest to theuser. By comparing the user query to a list of keywords specified by anadvertiser, it is possible to provide targeted advertisements to theuser.

Another form of online advertising is advertisement syndication, whichallows advertisers to extend their marketing reach by distributingadvertisements to additional partners. For example, third party onlinepublishers can place an advertiser's advertisements on web pages thathave content related to the advertisement. As the users are likelyinterested in the particular content on a publisher's webpage, they arealso likely to be interested in the product or service featured in theadvertisement. Accordingly, such targeted advertisement placement canhelp drive online customers to the advertiser's website.

Advertisers also distribute advertisements based on the location of auser. Typically, this involves sending the user advertisements forestablishments that are in the current proximity of the user. The user'slocation can be approximated by using the WiFi Hot Spot serving the userdevice, the cell phone tower that the user device is accessing, or GPSmeasurements.

Advertisers often set budgets for their advertising costs, and the sameis true for advertising on the web. The web also provides variables asto how often an advertisement may be presented. In some onlineadvertising systems, for example, advertisers pay for theiradvertisements on a per-action basis, e.g., a cost-per-click (CPC)basis. The CPC of an identified advertisement can be multiplied by aperformance metric, e.g., a click-through rate (CTR), for theadvertisement to provide a value that is proportional to the cost ofadvertisement presentation.

SUMMARY

This disclosure generally relates to content delivery, which may beachieved through a variety of processes, systems, and apparatuses. Inparticular implementations, content delivery is based at least in parton the velocity of the user device for which the content is destined.

In one general aspect, a process for content delivery may includeidentifying that a content item request for a user device has beenreceived, determining a position and velocity of the user device, andselecting a content item to provide to the user device based at least onits position and velocity. Selecting a content item may, for example,include analyzing the user device's location, speed, and direction oftravel. The process may also include sending the content item to theuser device. Sending the content item may, for example, includegenerating a message to convey the content item to the user device. Sucha process may, for example, be performed by a machine, instructions on acomputer readable medium, or other appropriate device.

The process may also include determining whether to provide a contentitem to the user device and determining the position and velocity if acontent item may be provided. The content item may, for example, be aconsumer-directed advertisement for a retail establishment.

Selecting a content item may include analyzing at least one additionalstate of the user device. An additional state may, for example, includetime of day, duration of travel, and/or the roadway on which the userdevice is traveling.

Selecting a content item may also include determining whether dataregarding a user or the associated user device may be used in selectingthe content item (e.g., the user has opted in to data collection and/oruse), and if the data may be used, the data is used in selecting acontent item for the user device. Selecting a content item mayadditionally include determining whether data regarding a systemassociated with the user device is available, and if data regarding anassociated system is available, using the data in selecting a contentitem for the user device. The associated system may, for example, be avehicle, and the associated system data may include the fuel level ofthe vehicle.

Various implementations may include one or more features. For example,using velocity as at least one basis for selecting a content item mayallow content items to be more appropriately targeted to users. Thus,users may obtain data that is more relevant to them, which can assistthem in making selections, not to mention reducing unwanted data, whichcan be annoying, distracting, and costly. The use of other parametersmay similarly facilitate this targeting. As another example, contentitem providers may be able to have their content items more narrowlytargeted to users who have interest in the content, which can provideincreased economic benefit to the content item providers.

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other features and aspects of thesubject matter will become apparent from the description, the drawings,and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating one example of an onlineenvironment for content delivery.

FIG. 2 is a block diagram illustrating one example of a user device forcontent delivery.

FIG. 3 is a block diagram illustrating one example of a network forcontent delivery.

FIG. 4 is a flow diagram illustrating one example of a process forcontent delivery.

FIG. 5 is a flow diagram illustrating one example of a process forcontent delivery.

FIG. 6 is a block diagram illustrating one example of a computing systemfor content delivery.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

Content may be delivered to user devices based on a variety ofparameters. In certain implementations, for example, a user device'sposition and velocity (i.e., speed and/or heading) may be used inselecting content items to provide to the user device. Other usefulparameters may include time of day, travel duration, and/or the state ofan associated system. These parameters may be useful in variouscombination with each other.

For example, if the content item is an advertisement, the relevancy ofthe advertisement for a search query may be determined by examining theposition and velocity of the user device that issued the query becausethis may provide an indication of the desires of the associated user.For instance, a user traveling on an interstate may want to know aboutupcoming gas stations, fast food restaurants, and motels, but a usertraveling in a city may want to know about retail shopping,service-oriented restaurants, dry cleaners, and hotels in the immediatevicinity.

The desires of the user may also be tied to information about which theuser is searching. For example, if the user is specifically searchingfor information about restaurants in a city, then advertisements aboutrestaurants can be targeted for the user. Of course, the position andvelocity can be used to select (e.g., tailor and/or prioritize) thechoices of restaurants advertised to the user.

The advertisements may be conveyed by pull-type or push-type techniques.For example, if a user is searching for advertisements regarding aparticular merchant, the conveyed advertisements may be responses to aspecific request from a user (e.g., a pull conveyance). As anotherexample, if a party is generally searching for information regarding asubject (e.g., restaurants), accesses a page that has associatedadvertisements (e.g., a restaurant review page), or has indicated thatthey are generally indicated in receiving content items, the conveyedadvertisements may be indirect responses to the user (e.g., a pushconveyance). These advertisements may be context or targetedadvertisements.

The selection may also be based on the past performance ofadvertisements for the area and/or current incentives. For example,certain advertisements may have a higher selection probability if otherusers have found the advertisements to be particularly useful, based,for example, on their use of the goods and/or services associated withthe advertisements or on their feedback (e.g., a survey). Additionally,if certain merchants are offering special deals (e.g., discounts orcoupons), the advertisements for those merchants may have a higherselection probability.

The selection may additionally be based on previously stored informationabout the associated user if, for example, the user has opted in forcollection and/or use of this information. For example, if a usertypically likes to dine at particular restaurants (e.g., McDonalds®versus Burger King®) or stay at particular motels (e.g., Holiday Inn® v.Courtyard®), then advertisements for these merchants may have a higherselection probability. In order to use stored user data in particularimplementations, users may have to indicate that they would like thisinformation to be used (e.g., through an opt-in program). If a user hasnot indicated that they would like to participate, the storedinformation about the user, if any, may be not be used.

Although various examples are described with reference toadvertisements, the systems and processes described herein can alsofacilitate the selection and delivery of other types of content itemshaving measurable performance or quality parameters, such as videos,articles, reviews, etc.

Content delivery may, for example, be implemented in an onlineenvironment, such as the example online environment 100 shown in FIG. 1.The online environment 100 can facilitate the selection and delivery ofcontent items, e.g., web pages, advertisements, etc., to users. Anetwork 110, such as a local area network (LAN), a wide area network(WAN), a cellular telephone network, the Internet, or a combinationthereof, connects advertisers 102 a and 102 b, an content managementsystem 104, publishers 106 a and 106 b, user devices 108 a and 108 b,and a search engine 112. Although only two advertisers (102 a and 102b), two publishers (106 a and 106 b) and two user devices (108 a and 108b) are shown, the online environment 100 may include many thousands ofadvertisers, publishers and user devices.

In the online environment 100, one or more advertisers 102 a and/or 102b can directly, or indirectly, enter, maintain, and track advertisementinformation in a content management system 104. The content items can bein the form of graphics, such as banner advertisements, text, audio,video and/or any other appropriate type of electronic advertisement 120.The content items may also include embedded information, such as alinks, meta-information, and/or machine executable instructions, such asHTML or JavaScript™.

A user device, such as user device 108, can submit a page contentrequest 109 to a publisher 106 or the search engine 112. In someimplementations, the page content 111 can be provided to the user device108 a in response to the request 109. The page content can includecontent items provided by the content management system 104 and/or caninclude executable instructions, e.g., JavaScript™, that can be executedat the user device 108 to request content items from the contentmanagement system 104. Example user devices 108 include personalcomputers, mobile communication devices, television set-top boxes,personal digital assistants, mobile information devices, etc.

Advertisements can also be provided from the publishers 106. Forexample, one or more publishers 106 can submit advertisement requestsfor one or more advertisements to the system 104. The system 104responds by sending the advertisements to the requesting publisher 106 aor 106 b for placement on one or more of the publisher's web properties(e.g., websites and other network-distributed content). Theadvertisements can include embedding links landing pages, e.g., pages onthe advertisers 102 websites, that a user is directed to when the userclicks an advertisement presented on a publisher website. Theadvertisement requests can also include content request information.This information can include the content itself (e.g., page or othercontent document), a category corresponding to the content or thecontent request (e.g., arts, business, computers, arts-movies,arts-music, etc.), part or all of the content request, content age,content type (e.g., text, graphics, video, audio, mixed media, etc.),geo-location information, etc.

In some implementations, a publisher 106 can combine the requestedcontent with one or more of the advertisements provided by the system104. This combined page content 109 and advertisements can be sent tothe user device 108 that requested the content (e.g., user device 108 a)as page content 111 for presentation in a viewer (e.g., a browser orother content display system). The publisher 106 can transmitinformation about the advertisements back to the content managementsystem 104, including information describing how, when, and/or where theadvertisements are to be rendered (e.g., in HTML or JavaScript™).

Publishers 106 can include general content servers that receive requestsfor content (e.g., articles, discussion threads, music, video, graphics,search results, web page listings, information feeds, etc.), andretrieves the requested content in response to the request. For example,content servers, related news content providers, retailers, independentblogs, social network sites, or any other entity that provides contentover the network 110 can be a publisher.

Advertisements can also be provided through the use of the search engine112. The search engine 112 can receive queries for search results. Inresponse, the search engine 112 can retrieve relevant search resultsfrom an index of documents (e.g., from an index of web pages). Anexemplary search engine 112 is described in the article S. Brin and L.Page, “The Anatomy of a Large-Scale Hypertextual Search Engine,” SeventhInternational World Wide Web Conference, Brisbane, Australia and in U.S.Pat. No. 6,285,999. Search results can include, for example, lists ofweb page titles, snippets of text extracted from those web pages, andhypertext links to those web pages, and may be grouped into apredetermined number of (e.g., ten) search results.

The search engine 112 can also submit a request for advertisements tothe system 104. The request may include a number of advertisementsdesired. This number may depend on the search results, the amount ofscreen or page space occupied by the search results, the size and shapeof the advertisements, etc. The request for advertisements may alsoinclude the query (as entered or parsed), information based on the query(such as geo-location information, whether the query came from anaffiliate and an identifier of such an affiliate), informationassociated with, or based on, the search results, and informationregarding the user device issuing the query (e.g., position andvelocity). Such information may include, for example, identifiersrelated to the search results (e.g., document identifiers or “docIDs”),scores related to the search results (e.g., information retrieval (“IR”)scores), snippets of text extracted from identified documents (e.g., webpages), full text of identified documents, feature vectors of identifieddocuments, etc. In some implementations, IR scores can be computed from,for example, dot products of feature vectors corresponding to a queryand a document, page rank scores, and/or combinations of IR scores andpage rank scores, etc.

The search engine 112 can combine the search results with one or more ofthe advertisements provided by the system 104. This combined informationcan then be forwarded to the user device 108 that requested the contentas the page content 111. The search results can be maintained asdistinct from the advertisements, so as not to confuse the user betweenpaid advertisements and presumably neutral search results.

The advertisers 102, user devices 108, and/or the search engine 112 canalso provide usage information to the content management system 104.This usage information can include measured or observed user behaviorrelated to advertisements that have been delivered, such as, forexample, whether or not a conversion or a selection related to anadvertisement has occurred. The system 104 performs financialtransactions, such as crediting the publishers 106 and charging theadvertisers 102 based on the usage information. Such usage informationcan also be processed to measure performance metrics, such as aclick-through rate (“CTR”), conversion rate, and other measurableperformance metrics.

A click-through can occur, for example, when a user of a user device,selects or “clicks” on a link to a content item returned by thepublisher or the advertising management system. The CTR is a performancemetric that is obtained by dividing the number of users that clicked onthe content item, e.g., a link to a landing page, an advertisement, or asearch result, by the number of times the content item was delivered.For example, if a link to a content item is delivered 100 times, andthree persons click on the content item, then the CTR for that contentitem is 3%. Other usage information and/or performance metrics can alsobe used.

A “conversion” occurs, for example, when a user consummates atransaction related to a previously served advertisement. Whatconstitutes a conversion may vary from case to case and can bedetermined in a variety of ways. For example, a conversion may occurwhen a user clicks on an advertisement, is referred to the advertiser'sweb page, and consummates a purchase there before leaving that web page.A conversion can also be defined by an advertiser to be anymeasurable/observable user action such as, for example, downloading awhite paper, navigating to at least a given depth of a Website, viewingat least a certain number of web pages, spending at least apredetermined amount of time on a web site or web page, registering on aweb site, etc. Other actions that constitute a conversion can also beused.

In addition to using content such as a search query or web page contentof a publisher to select advertisements, advertisements can also beselected using other selection processes, such as an auction. In oneimplementation, the content management system 104 includes an auctionprocess. Advertisers 102 may be permitted to select, or bid, an amountthe advertisers are willing to pay for each click of an advertisement,e.g., a cost-per-click amount an advertiser pays when, for example, auser clicks on an advertisement. The cost-per-click can include amaximum cost-per-click, e.g., the maximum amount the advertiser iswilling to pay for each click of advertisement based on a keyword. Forexample, advertisers A, B, and C all select, or bid, a maximumcost-per-click of $0.50, $0.75, and $1.00, respectively. The maximumamount advertiser A will pay for a click is $0.50, the maximum amountadvertiser B will pay is $0.75, and the maximum amount advertiser C willpay is $1.00.

The position, or rank, of an advertisement, such as where theadvertisement is displayed next to search results or in which slot anadvertisement will be displayed on a publisher page, can be a functionof the cost-per-click multiplied by a quality score associated with theadvertisement. A quality score can be the basis for measuring thequality and relevance of an advertisement. The quality score can, forexample, be determined by the advertisement's click-through rate, therelevance of the advertisement text, overall historical keywordperformance, and the user experience on a landing page associated withthe advertisement. Other parameters can also be used to determine aquality score.

The rank of an advertisement that is displayed can be determined, forexample, by multiplying the maximum cost-per-click for the advertisementby a quality score of the advertisement. The advertisement can then beplaced among other advertisements in order of increasing or decreasingrank. For example, suppose the quality score of advertisers A, B, and Care “3,” “1,” and “1,” respectively. The rank of advertiser A, B, and Ccan be determined as follows:

-   -   A: Rank=quality score×maximum cost-per-click=3.0×$0.50=1.50    -   B: Rank=quality score×maximum cost-per-click=1.0×$0.75=0.75    -   C: Rank=quality score×maximum cost-per-click=1.0×$1.00=1.00    -   The advertisers can be ranked as follows:    -   1. A    -   2. C    -   3. B

The advertisements, associated usage data, and bidding parametersdescribed above can be stored as advertisement data in an content itemdata store 114. In general, content item data store 104 can storecontent items that can be presented in a content item presentation.Example content item presentations include advertisements beingpresented on a web page, a list of video being presented for selectionon a web page, a list of articles for being presented on a web page,etc.

The content management system 104 can further manage the delivery ofadvertisements by using selection criteria to select one or moreadvertisements to provide in response to a data request. The selectioncriteria can be stored in a selection criteria data store 116, whichcan, for example, specify when, where, and under what conditionsparticular advertisements may be delivered. For example, a gas stationcompany may design an advertising campaign for new goods (e.g., hotfood) and/or services (e.g., car wash). The selection criteria mayinclude the products and/or services sought and the location of the gasstation. As another example, a gas station may want to offer a discounton drinks (e.g., coffee) at a certain time of day (e.g., morning), whichcould be relevant to searches for coffee and/or searches that occur inthe morning. Such data defining the selection criteria can be stored inthe data store 116. Additionally, advertiser's budgets could be takeninto consideration.

In some implementations, the selection criteria can be on historicalperformance of advertisements. For example, a historical click-throughrate of an advertisement, a historical conversion rate associated withan advertisement, or some combination of these historical rates and/orother rates, may provide an indication that other user found theseadvertisements to be of value. Additionally, user reviews associatedwith advertisements (e.g., very good coffee), could be used.

The content items and their selection criteria can be submitted to thecontent item selector 130, which can, in turn, determine which contentitems to present in the content item presentation. For example, if thecontent items are advertisements, the content item selector 130 can bean engine that identifies advertisements most relevant to a datarequest.

In some modes of operation, when content management system 104determines that an advertisement is needed for a user device (e.g., byreceiving a data request from the user device or a request from a searchengine, a web application, or a publisher), the content managementsystem determines a position and velocity for the user device.Determining the position and velocity for the user device may includeanalyzing data in a content item request or data request, requestingdata from the user device, or accessing previously stored data regardinga device's position. Position data from the user device may, forexample, be from GPS measurements made by the user device. In particularimplementations, a user may need to indicate their permission to userposition and/or velocity before it may be used (e.g., through an opt-inprogram).

Content management system 104 may also determine whether other data isavailable. For example, the content management system may also determinewhether other state data regarding the user device (e.g., time of day ofthe request, travel duration of the user device, or roadway of travel)is available or whether any data regarding a system associated with theuser device (e.g., a vehicle) is available. A roadway may, for example,be determined by linking the user device's position and velocity to amapping application. For cases in which the associated system is avehicle, for instance, a user device may communicate with the vehiclethrough wireline connections, (e.g., Ethernet or USB), wirelessconnections (e.g., Bluetooth or Wireless Ethernet), or otherwise todetermine any appropriate type of data regarding the vehicle (e.g., fuellevel, velocity, duration of travel, or final destination). Dataregarding the user device or the associated system may be included orderived from a request or requested from the user device.

In particular implementations, content management system 104 maydetermine whether it is permissible to use data regarding a userassociated with a user device. This determination may involve checkingwhether the user has previously provided permission to use associateduser data and/or requesting permission from the user. Associated userdata may, for example, include previous selections made by the user,previous preferences specified by the user, data that is contained inthe data request (e.g., the user is searching for gas stations), orprevious routes taken by the user (e.g., one-shot pass through an areaor repeat traveler). The associated user data may, for example, bestored in a database regarding the user.

Using the position and velocity for the user device that initiated adata request, along with any of the other available and permissibledata, content management system 104 may select one or more content itemsfor the user. For example, using the user device's position and velocityand the time that the user device issued the data request may allowselection of a potentially relevant advertisement for the user device'suser (e.g., an advertisement for a motel if the user device is moving athigh speed down an interstate at night versus an advertisement for acoffee shop if the user device is moving slowly down a city street inthe morning). Using the user device's position and velocity and dataregarding an associated user may also allow selection of a potentiallyrelevant advertisement (e.g., an advertisement for a type of restaurantthat the associated user frequents and is on the user device's pathversus a randomly selected restaurant on the user device's path or allthe restaurants on the user device's path). Moreover, if it is knownthat the user regularly travels this path, different advertisements(e.g., repeat customer discounts or larger incentives) may be offered.Additionally, if the user device's destination is known (e.g., from aquery to a mapping application), a merchant along the user device'sroute may be found. Note that the route need not be the same as thecurrent heading. Similarly, using the user device's position andvelocity and data regarding a system associated with the user device mayallow selection of a potentially relevant advertisement (e.g., anadvertisement for a gas station on the user device's path if anassociated vehicle is low on gas versus an advertisement for arestaurant and/or a merchant along the user device's route ifdestination data is available from a vehicle's navigation system). Theparameters may also be utilized in various other combinations to makethe selection. The selected content item(s) may be any appropriate typeof information (e.g., text, graphics, audio, or video) for presentationto a user.

In making the selection, content item selector 130 may use dataregarding content items from selection criteria data store 116. Datastore 116 may contain a variety of data regarding content items. Forexample, the data store may include data defining the relevant type,geographic location, time of day, pricing data, and discounts for anadvertisement. By comparing the data associated with the data request tothe data in data store 116, content item selector may determine whichadvertisements, if any, correspond to a data request.

Additionally, if a large number of content items correspond to a datarequest, content item selector 130 may further determine which of thecorresponding content items to select. For example, if only a limitednumber of content items may be used, content item selector 130 mayselect the content items that best correspond to the data request (e.g.,based on location, price, and/or user preferences, if permissible). Asanother example, if there are several types of content items thatcorrespond to a data request (e.g., gas stations, restaurants, andmotels), the content item selector may select the best correspondencefor each type.

Once the appropriate content items have been selected, contentmanagement system 104 may generate a message for conveying the selectedcontent items to the user device. A content item may be conveyed byitself or as part of another piece of information (e.g., a web page or amap) and may be conveyed directly to the user device or through anothercomponent (e.g., a search engine or web application). The content itemmay be designed for presentation to the user by itself or as part of theother piece of information. For example, if a user is accessing aweb-based mapping program, advertisements can be conveyed as text feedsor icons to assist in recognition. If an icon is of interest, it can beselected and then displayed. Moreover, directions may be automaticallyprovided and coupons may be presented, which can be physically presented(e.g., in paper form) or electronically presented (e.g., by download orimage scan) at the merchant. This may assist in reducing distraction ofthe user from other tasks.

Advertisements may also be accompanied by additional data. For example,the mileage and projected arrival time may accompany an advertisement toprovide the user additional information.

The content management system 104 can be implemented on one or morecomputers. An example computer is discussed below with respect to FIG.5. The management system 104 may, however, may be only one aspect ofwhat a computer is executing. Thus, an implementing computer may executevarious other processes (e.g., a web site or a search engine).

As discussed, system 100 provides the ability for content items to bemore appropriately targeted to users. Thus, users may obtain data thatis more relevant, which can assist them in making selections andreducing unwanted data. Moreover, providers of content items may be ableto have their content items more narrowly targeted to users who haveinterest in them, which can provide increased economic benefit to thecontent item providers.

FIG. 2 illustrates one example of a user device 200 for deliveringcontent to a user. User device 200 may, for example, be useful in asystem such as system 100.

User 200 includes a wireless transceiver 210, a processor 220, andmemory 230. Transceiver 210 is operable to send and receive wirelessmessages and data and for user device 200. Transceiver 210 may operateaccording to any appropriate wireless technique (e.g., infrared (IR) orradio frequency (RF)) and may use any appropriate communication protocol(e.g. IRDA, IS-95, IS-136, WCDMA, IEEE 802.11, or IEEE 802.16).Processor 220 processes data received by transceiver 210 and alsoprovides data to transceiver 210. Processor 220 may, for example,include a microprocessor, a microcontroller, a digital signal processor,and/or any other appropriate device for manipulating information in alogical manner. Processor 220 may have internal instructions, buttypically also operates according to instructions 232 in memory 230,which may include random access memory, read only memory, programmableread only memory, and/or any other appropriate devices for storinginformation. Instructions 232 include an operating system 234 (e.g.,Windows®, Linux, or Unix®) and one or more applications 236 (e.g. a webbrowser). Memory 230 also stores data 238 for the applications 236.

User device 200 also includes a tactile user input device 240 (e.g., akeyboard, a keypad, a touch pad, or a stylus) and a visual user outputdevice 250 (e.g., a display screen). By using input device 240, a usermay convey commands and data to processor 220, and by using outputdevice 250, the processor may provide instructions and data to the user.

User device 200 additionally includes a coder/decoder (CODEC) 260, andan audio user input device 270 (e.g., a microphone) and an audio useroutput device 280 (e.g., a speaker). CODEC 260 is responsible forencoding audible signals from a user into an acceptable format forprocessor 220 or wireless transceiver 210 and for decoding signals fromprocessor 220 or wireless transceiver 210 for output device 280. Byusing CODEC 260, input device 270, and output device 280, a user mayissue audible commands and data to and/or audibly receive instructionsand data from processor 220 and/or conduct a conversation with anotherparty through wireless transceiver 210.

In one mode of operation, when the user device 200 determines that auser desires to convey a data request (e.g., by receiving a commandthrough input device 240), processor 220 generates a message (e.g., anHTTP request, a search, or a query) for conveying the data request to aremote computer (e.g., a server) that may satisfy the request. Therequest may for example, be entered through an application such as a webbrowser (e.g., Internet Explorer or Navigator) or through a toolbar(e.g., from Google or Yahoo). The remote computer may, for example, berunning a search engine and/or a web site.

The user device may then wait for a response to the data request and/orcontinue to perform other operations. When a response to the datarequest is received, the user device provides the data to the user,typically through the visual output device 250, or possibly through theaudio output device 280. The response may include a selected contentitem, and this may be provided to the user through the same device thatprovides the response or through another device.

Along with reviewing with the data response, the user can choose whetherthe review to the content item. For example, the user can read thecontent item, open the content item, or activate a link for the contentitem. The user device 200 can then provide more data regarding thecontent item or issue requests for and provide more data regarding thecontent item.

As illustrated, user device 200 may embody many of the features of acellular telephone. Other user devices may also be useful with system100, however, such as personal computers, notebook computers, personaldigital assistants, or any other type of computing device, regardless ofwhether or not it has the same or different set of input and outputfeatures of user device 200.

User device 200 may request and/or present content items with or withoutspecially downloaded instructions for advertisements. For example,content items may be requested and presented through a general webbrowser. As another example, user device 200 may have speciallydownloaded instructions for requesting and presenting advertisements.The downloaded instructions may take any of a variety of forms, such asa stand-alone software application or a script. In some implementations,the downloaded instructions may determine when to initiate a requestbased on actions at the user device (e.g., when a user floats a new maptile or selects a certain group of data for review).

FIG. 3 illustrates a wireless network 300 for content delivery. Wirelessnetwork 300 is operable to wirelessly receive data from a user deviceand convey it to other devices within the wireless network or to userdevices in other appropriate networks. Wireless network 300 may, forexample, be used in a system such as system 100.

In more detail, wireless network 300 includes base transceiver stations(BTSs) 310, base station controllers (BSCs) 320, a mobile switchingcenter (MSC) 330, and a packet data serving node (PDSN) 340. BTSs 310are responsible for the actual conveyance of wireless electromagneticsignals from and to wireless user devices (one of which is illustratedas user device 370). The signals could contain any type of information.BSCs 320, in turn, are responsible for analyzing messages, which couldcontain any type of information (e.g., voice or data), from wirelessuser devices and sending them to the appropriate one of MSC 330 and PDSN340. Additionally, BSCs 320 are responsible for analyzing messages fromMSC 330 and PDSN 340 and sending them to the appropriate one of BTSs310. Each of BSCs 320 is coupled to one or more of BTSs 310.

MSC 330 is responsible for establishing wireless network sessions withwireless user devices and conveying voice messages within wirelessnetwork 300 or to an external voice network, such as, for example, apublic switched telephone network (PSTN). Additionally, MSC 330 isresponsible for handling handoffs between BTSs 310 if a wireless userdevice moves between them during a session (in the direction of arrow380, for example).

To accomplish its functions, MSC 330 is coupled to a subscriber database350. Subscriber database 350 may contain any appropriate informationabout a subscriber, such as for example, available service plan andvalidation data. An entry for a user in the subscriber database may beestablished when the user registers for wireless services and may beupdated as needed. In particular implementations subscriber database 350is a home location register (HLR).

PDSN 340, in turn, is responsible for conveying data within wirelessnetwork 300, including to and from other wireless user devices.Additionally, PDSN 340 may send data to and receive data from anexternal data network, such as for, example, the Internet, so that datamay be sent to and received from other devices, including web sites,search engines, and user devices.

In certain implementations, network 300 may assist with determining thelocation and/or velocity of user devices. For example, an approximationof a user device's location and velocity may be determined by using anumber of cell tower identifiers. As another example, using cell towertriangulation may provide a refined approximation of a user device'slocation, and a series of the measurements may provide an indication ofvelocity.

FIG. 4 illustrates one implementation of a process 400 for contentdelivery. Process 400 may, for example, be implemented by a contentmanagement system such as content management system 104 in system 100.Process 400 may, for example, represent the operations of a softwareprogram, loop, subroutine, sub-program, or thread.

Stage 404 waits to receive a request for a content item for a userdevice. A request may, for example, be in response to a query to asearch engine, the accessing of a web site, the accessing of a webapplication (e.g., a mapping program), or a specific request for acontent item. Alternatively, the request may be inferred (e.g., fueltank is low, a timer has expired, or other automatic prompt). Therequest can be received by, for example, a content management system.When a content item request is received for a user device, a positionand velocity for the user device is determined (408). Determining theposition and velocity may include analyzing data in the data request,requesting data from the user device, or accessing previously storeddata regarding a device's position. In particular implementations, theposition data may be from GPS measurements made by the user device. Theposition and velocity can be determined by, for example, a content itemselector.

One or more content items are selected for the user device based on thedevice's position and velocity (412). For example, using the device'sposition and velocity may allow the selection of a potentially relevantadvertisement for the user device's user. For instance, users travelingat a high rate of speed may have different needs than those travelingslowly. Moreover, users traveling at a high rate of speed may typicallywant items that are ahead of them and close to their travel direction,while those traveling slowly may not be so geographically constrained.The content item may be any appropriate type of information (e.g., text,graphics, audio, or video) for presentation to a user and may, forexample, be located in a content item data store. Selection can beperformed by, for example, a content item selector.

A message is then generated for conveying the selected content item(s)to the user device (416). A content item may be conveyed by itself or aspart of another piece of information (e.g., a web page or a map). Thecontent item may be designed for presentation to the user by itself oras part of the other piece of information. A message for conveying theselected content item(s) may, for example, be generated by a contentmanagement system.

Although FIG. 4 illustrates one example of a process for contentdelivery, other processes for content delivery may include fewer,additional, and/or a different arrangement of operations. For example, aprocess may not wait until receiving a data request from a user devicebefore determining the user device's position and velocity. As anadditional example, other parameters regarding a user device, such astime of day, duration of travel, or destination, or a system associatedwith the user device may also be used in selecting a content item.Additionally, in particular implementations, data regarding a userassociated with the user device may be used in selecting the userdevice. As a further example, generating a message for conveying theselected content item need not be part of the process. As anotherexample, one or more operations may occur in a contemporaneous and/orsimultaneous manner.

FIG. 5 illustrates another implementation of a process 500 for contentdelivery. Process 500 may, for example, be implemented by a contentmanagement system such as content management system 104 in system 100.Process 500 may, for example, represent the operations of a softwareprogram, loop, subroutine, sub-program, or thread.

Stage 504 waits to receive a request for a content item for a userdevice. A request may, for example, be in response to a query to asearch engine, the accessing of a web site, the accessing of a webapplication (e.g., a mapping program), or a specific request for acontent item. Alternatively, the request may be inferred (e.g., fueltank is low, a timer has expired, or other automatic prompt). Therequest can be received by, for example, a content management system.When a content item request is received for a user device, it isdetermined whether it is appropriate to provide a content item for theuser device (508). It may not be appropriate to provide a content itemfor a user device, for example, if the user device has indicated that itdoes not desire content items, there is an indication that the userdevice cannot process content items, or the user has not indicated thatit is permissible to use his position and/or velocity information (e.g.,through an opt-in selection). The determination may, for example, beaccomplished by a content management system.

If it is not appropriate to provide a content item for the user device,stage 504 continues with waiting for another request for a content itemfor a user device. If, however, it is appropriate to provide a contentitem for the user device, a position and velocity for the user device isdetermined (512). Determining the position and velocity for the userdevice may include analyzing data in the data request, requesting datafrom the user device, (e.g., GPS measurements), or accessing previouslystored data regarding a device's position. The position and velocity canbe determined by, for example, a content item selector.

Whether one or more additional user device states are available is alsodetermined (516). The additional user device states may, for example,include time of day of a data request or travel duration of the userdevice. The additional user device state(s) can be determined by, forexample, a content item selector. If an additional user device state isavailable, the additional state is determined (520). A state may, forexample, be included or derived from a data request or requested fromthe user device. The additional user device state can be determined by,for example, a content item selector.

Once any additional state of the user device has been determined, or ifno additional state is available, whether it is acceptable to use dataregarding a user associated with the user device is determined (524).This determination may involve checking whether the user has previouslyprovided permission to use associated user data and/or requestingpermission from the user. Associated user data may, for example, includeprevious selections made by the user, previous preferences specified bythe user, or data that is contained in the data request (e.g., the useris searching for gas stations). Whether it is acceptable to use dataregarding a user can be determined by, for example, a content itemselector. If associated user data may be used, the associated user statecan be identified (528). The associated user data may, for example, bestored in a database regarding the user and can be identified by, forexample, a content item selector.

Once any information regarding the user has been identified, or if noinformation regarding the user may be used, whether data regarding asystem associated with the user device is available can be determined(532). An associated system may, for example, be a vehicle in which theuser device is being transported or of which the user device is a part.A user device may communicate with a vehicle through wirelineconnections, wireless connections, or otherwise. In particularimplementations, a user device can receive messages from the vehicle'scontroller area network (CAN). Whether data regarding an associatedsystem is available can be determined by, for example, a content itemselector. If data regarding a system associated with the user device isavailable, the data is identified (536). For cases in which theassociated system is a vehicle, for example, the data may indicate thefuel level in the vehicle, the duration of travel of the vehicle, or thefinal destination of the vehicle. The data regarding the system can bedetermined by, for example, a content item selector.

Once any information regarding an associated system has been identified,or if no information regarding an associated system has been identified,one or more content items for the user device can be selected based onthe device's position and velocity and one or more of an additionalstate regarding the user device, data regarding an associated user, anddata regarding an associated system (540). For example, using the userdevice's position and velocity and the time that the user device issuedthe data request may allow selection of a potentially relevantadvertisement for the user device's user (e.g., an advertisement for amotel if the user device is moving at high speed down an interstate atnight versus an advertisement for a coffee shop if the user device ismoving slowly down a city street in the morning). Using the userdevice's position and velocity and data regarding a user associated withthe user device may also allow selection of a potentially relevantadvertisement (e.g., an advertisement for a type of restaurant that theassociated user frequents and is on the user device's path versus arandomly selected restaurant on the user device's path or all therestaurants on the user device's path). Similarly, using the userdevice's position and velocity and data regarding a system associatedwith the user device may allow selection of a potentially relevantadvertisement (e.g., an advertisement for a gas station on the userdevice's path if an associated vehicle is low on gas versus anadvertisement for a restaurant). The parameters may also be utilized invarious other combinations to make the selection. The content items canbe selected by, for example, a content item selector, and the selectedcontent item(s) may be any appropriate type of information (e.g., text,graphics, audio, or video) for presentation to a user.

A message for conveying the selected content item(s) to the user devicemay be generated (544). A content item may be conveyed by itself or aspart of another piece of information (e.g., a web page or a map). Thecontent item may be designed for presentation to the user by itself oras part of the other piece of information. A message may be generatedby, for example, a content management system.

Although FIG. 5 illustrates one example of a process for contentdelivery, other processes for content delivery may include fewer,additional, and/or a different arrangement of operations. For example, aprocess may not wait until receiving a data request for a user devicebefore determining the user device's position and velocity. As anotherexample, various parameters may not be used and, hence, need not bechecked. As a further example, the parameters may be checked in variousorders. As a further example, generating a message for conveying theselected content item need not be part of the process. As an additionalexample, one or more operations may occur in a contemporaneous and/orsimultaneous manner.

FIG. 6 illustrates one example computer system 600. The system 600includes a processor 610, a memory 620, a storage device 630, and aninput/output device 640. Each of the components 612, 620, 630, and 640can, for example, be interconnected using a system bus 650. Theprocessor 610 is capable of processing instructions for execution withinthe system 600. In one implementation, the processor 610 is asingle-threaded processor. In another implementation, the processor 610is a multi-threaded processor. The processor 610 is capable ofprocessing instructions stored in the memory 620 or on the storagedevice 630.

The memory 620 stores information within the system 600. In oneimplementation, the memory 620 is a computer-readable medium. In oneimplementation, the memory 620 is a volatile memory unit. In anotherimplementation, the memory 620 is a non-volatile memory unit.

The storage device 630 is capable of providing mass storage for thesystem 600. In one implementation, the storage device 630 is acomputer-readable medium. In various different implementations, thestorage device 630 can, for example, include a hard disk device, anoptical disk device, or some other large capacity storage device.

The input/output device 640 provides input/output operations for thesystem 600. In one implementation, the input/output device 640 caninclude one or more of a network interface devices, e.g., an Ethernetcard, a serial communication device, e.g., and RS-232 port, and/or awireless interface device (e.g., an 802.11 card). In anotherimplementation, the input/output device can include driver devicesconfigured to receive input data and send output data to otherinput/output devices, e.g., keyboard, printer and display devices 660.Other implementations, however, can also be used, such as mobilecomputing devices, mobile communication devices, set-top box televisionclient devices, etc.

The content management system 104 can be realized by instructions thatupon execution cause one or more processing devices to carry out theprocesses and functions described above. Such instructions can, forexample, comprise interpreted instructions, such as script instructions,e.g., JavaScript or ECMAScript instructions, or executable code, orother instructions stored in a computer readable medium. The contentmanagement system 104 can be distributively implemented over a network,such as a server farm, or can be implemented in a single computerdevice.

Implementations of the above subject matter and the functionaloperations can be achieved in digital electronic circuitry, or incomputer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. Implementations of the subjectmatter described in this specification can be achieved as one or morecomputer program products, i.e., one or more modules of computer programinstructions encoded on a tangible program carrier for execution by, orto control the operation of, data processing apparatus. The tangibleprogram carrier can be a propagated signal or a computer readablemedium. The propagated signal is an artificially generated signal, e.g.,a machine generated electrical, optical, or electromagnetic signal thatis generated to encode information for transmission to suitable receiverapparatus for execution by a computer. The computer readable medium canbe a machine readable storage device, a machine readable storagesubstrate, a memory device, a composition of matter effecting a machinereadable propagated signal, or a combination of one or more of them.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, or declarative orprocedural languages, and it can be deployed in any form, including as astand alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment. A computer program does notnecessarily correspond to a file in a file system. A program can bestored in a portion of a file that holds other programs or data (e.g.,one or more scripts stored in a markup language document), in a singlefile dedicated to the program in question, or in multiple coordinatedfiles (e.g., files that store one or more modules, sub programs, orportions of code). A computer program can be deployed to be executed onone computer or on multiple computers that are located at one site ordistributed across multiple sites and interconnected by a communicationnetwork.

Additionally, the logic flows and structure block diagrams described inthis patent document, which describe particular methods and/orcorresponding acts in support of steps and corresponding functions insupport of disclosed structural means, may also be utilized to implementcorresponding software structures and algorithms, and equivalentsthereof. The processes and logic flows described in this specificationcan be performed by one or more programmable processors executing one ormore computer programs to perform functions by operating on input dataand generating output.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto optical disks, or optical disks. However, a computerneed not have such devices.

Computer readable media suitable for storing computer programinstructions and data include all forms of non volatile memory, mediaand memory devices, including by way of example semiconductor memorydevices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks,e.g., internal hard disks or removable disks; magneto optical disks; andCD ROM and DVD ROM disks. The processor and the memory can besupplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front end component, e.g., aclient computer having a graphical user interface or a web browserthrough which a user can interact with an implementation of the subjectmatter described is this specification, or any combination of one ormore such back end, middleware, or front end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client server relationship to each other.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinvention or of what may be claimed, but rather as descriptions offeatures that may be specific to particular embodiments of particularinventions. Certain features that are described in this specification inthe context of separate implementations can also be implemented incombination in a single implementation. Conversely, various featuresthat are described in the context of a single implementation can also beimplemented in multiple implementations separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain implementations and even initially claimed as such,one or more features from a claimed combination can in some cases beexcised from the combination, and the claimed combination may bedirected to a subcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all embodiments, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Particular implementations of the subject matter described in thisspecification have been described. Other implementations are within thescope of the following claims. For example, the actions recited in theclaims can be performed in a different order and still achieve desirableresults. As one example, the processes depicted in the accompanyingfigures do not necessarily require the particular order shown, orsequential order, to achieve desirable results. In certainimplementations, multitasking and parallel processing may beadvantageous.

This written description sets forth the best mode of the invention andprovides examples to describe the invention and to enable a person ofordinary skill in the art to make and use the invention. This writtendescription does not limit the invention to the precise terms set forth.Thus, while the invention has been described in detail with reference tothe examples set forth above, those of ordinary skill in the art mayeffect alterations, modifications and variations to the examples whilestill achieving content delivery.

The invention claimed is:
 1. A computer-implemented method for contentdelivery, the method comprising: receiving, at a server, a search queryfrom a user device, the search query being generated by a user of theuser device; receiving search results based on the search query;providing, in response to the search query, a content item request basedon the search query; determining, at the server, a position, adirection, and a velocity of the user device based on data received fromthe user device; obtaining user history information of a user of theuser device, the user history information specifying one or moreprevious routes taken by the user; determining that the velocity of theuser device exceeds a speed threshold; in response to determining thatthe velocity of the user device exceeds the speed threshold, identifyinga plurality of content items that each correspond to a respectivelocation that is: within a threshold distance of a path on which theuser is traveling; and in the direction in which the user is travelingon the path; identifying, from the plurality of content items, aparticular content item as being potentially relevant to the user basedat least on the content item request, the one or more previous routestaken by the user and specified by the user history information, and theposition and the velocity of the user device; and sending the searchresults and the particular content item to the user device for displayto the user.
 2. The method of claim 1, wherein identifying theparticular content item further comprises analyzing at least oneadditional state of the user device.
 3. The method of claim 2, whereinthe at least one additional state comprises time of day.
 4. The methodof claim 2, wherein the at least one additional state comprises durationof travel.
 5. The method of claim 2, wherein the at least one additionalstate comprises a roadway on which the user device is traveling.
 6. Themethod of claim 1, further comprising: determining whether dataregarding the user or the user device may be used in selecting theparticular content item; when the data is to be used, identifying thedata; and using the identified data in the particular content item forthe user device.
 7. The method of claim 1, further comprising:determining whether data regarding a system associated with the userdevice is available; and when data regarding the associated system isavailable, using the data in identifying the particular content item forthe user device.
 8. The method of claim 7, wherein the associated systemcomprises a vehicle.
 9. The method of claim 8, wherein the associatedsystem data comprises a fuel level of the vehicle.
 10. The method ofclaim 1, wherein the particular content item comprises aconsumer-directed advertisement for a retail establishment.
 11. Themethod of claim 1, wherein sending the particular content item comprisesgenerating a message to convey the particular content item to the userdevice.
 12. The method of claim 1, wherein the data comprises positiondata.
 13. The method of claim 1, further comprising accessing storedposition data associated with the user device, wherein the position andthe velocity is further based on the stored position data.
 14. Themethod of claim 1, wherein the data is provided in the content itemrequest.
 15. The method of claim 1, further comprising selecting asecond content item based on the content item request and sending thesecond content item to the user device.
 16. The method of claim 1,further comprising: monitoring a status of a vehicle in which the useris traveling; and determining, based on the status of the vehicle, toinitiate the content item request, the content item request including arequest for content items related to the status of the vehicle, whereinthe particular content item is identified from the plurality of contentitems based on the status of the vehicle.
 17. The method of claim 16,wherein the status of the vehicle comprises a fuel level of the vehicle.18. The method of claim 1, further comprising: determining the path onwhich the user is traveling based on the one or more previous routestaken by the user and the position of the user device.
 19. The method ofclaim 18, wherein the user history information includes one or morebusiness locations previously visited by the user that are on a path ofthe user device and excludes locations on the path that the user has notvisited.
 20. A non-transitory computer readable medium storinginstructions operable to cause one or more machines to performoperations comprising: receiving, at a server, a search query from auser device, the search query being generated by a user of the userdevice; receiving search results based on the search query; providing,in response to the search query, a content item request based on thesearch query; determining, at the server, a position, a direction, and avelocity of the user device based on data received from the user device;obtaining user history information of a user of the user device, theuser history information specifying one or more previous routes taken bythe user; determining that the velocity of the user device exceeds aspeed threshold; in response to determining that the velocity of theuser device exceeds the speed threshold, identifying a plurality ofcontent items that each correspond to a respective location that is:within a threshold distance of a path on which the user is traveling;and in the direction in which the user is traveling on the path;identifying, from the plurality of content items, a particular contentitem as being potentially relevant to the user based at least on thecontent item request, the one or more previous routes and specified bythe user history information, and the position and the velocity of theuser device; and sending the search result and the particular contentitem to the user device for display to the user.
 21. The computerreadable medium of claim 20, wherein identifying the particular contentitem further comprises analyzing an additional state of the user device.22. The computer readable medium of claim 20, wherein the instructionsare further operable to cause the one or more machines to performoperations comprising: determining whether data regarding the user orthe associated user device may be used in selecting the content item;when the data is to be used, identifying the data; and using theidentified data in selecting the particular content item for the userdevice.
 23. The computer readable medium of claim 20, wherein theinstructions are further operable to cause the one or more machines toperform operations comprising: determining whether data regarding asystem associated with the user device is available; and when dataregarding the associated system is available, using the data inidentifying the particular content item for the user device.
 24. Acontent delivery system, comprising: a content management computingdevice that receives a search query from a user device, the search querybeing generated by a user of the user device, receives search resultsbased on the search query; provides, in response to the search query, acontent item request based on the search query, determines a position, adirection, and a velocity of the remote user device based on datareceived from the remote user device, and obtains user historyinformation of a user of the remote user device; wherein the userhistory information specifies one or previous routes taken by the user;and a content item selector that determines that the velocity of theuser device exceeds a speed threshold, identifies a plurality of contentitems that each correspond to a respective location that is within athreshold distance of a path on which the user is traveling and that isin the direction in which the user is traveling on the path in responseto determining that the velocity of the user device exceeds the speedthreshold, identifies, from the plurality of content items, a particularcontent item as being potentially relevant to the user based at least onthe content item request, the one or more previous routes taken by theuser and specified by the user history information, and the position andthe velocity of the remote user device, wherein the content managementcomputing device sends the search results and the particular contentitem to the remote user device for display to the user.